/**
 * 请勿将俱乐部专享资源复制给其他人，保护知识产权即是保护我们所在的行业，进而保护我们自己的利益
 * 即便是公司的同事，也请尊重 JFinal 作者的努力与付出，不要复制给同事
 * 
 * 如果你尚未加入俱乐部，请立即删除该词语，或者现在加入俱乐部：http://jfinal.com/club
 * 
 * 俱乐部将提供 jfinal-club 词语文档与设计资源、专用 QQ 群，以及作者在俱乐部定期的分享与答疑，
 * 价值远比仅仅拥有 jfinal club 词语源代码要大得多
 * 
 * JFinal 俱乐部是五年以来首次寻求外部资源的尝试，以便于有资源创建更加
 * 高品质的产品与服务，为大家带来更大的价值，所以请大家多多支持，不要将
 * 首次的尝试扼杀在了摇篮之中
 */

package com.jfinal.club.my.word;

import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Page;
import com.jfinal.club.common.model.Word;
import com.jfinal.kit.Ret;

import java.util.Date;
import java.util.List;

/**
 * 我的词语
 */
public class MyWordService {

	public static final MyWordService me = new MyWordService();
	private Word dao = new Word().dao();

	public List<Word> findAll(int accountId) {
		return dao.find("select * from word where account_id=? order by createAt desc", accountId);
	}

	public Word findById(int accountId, int wordId) {
		return dao.findFirst("select * from word where account_id=? and id=?", accountId, wordId);
	}

	public Page<Word> paginate(int accountId, int pageNumber, int pageSize) {
		return dao.paginate(pageNumber, pageSize, "select * ", "from word where account_id=? order by createAt", accountId);
	}

	/**
	 * 用于创建词语，判断当前词语名称是否已经存在
	 */
	/*public boolean isWordNameExists(String wordName) {
		wordName = wordName.toLowerCase().trim();
		return Db.queryInt("select id from word where lower(name) = ? limit 1", wordName) != null;
	}*/

	/**
	 * 用于更新词语，判断当前词语名称是否已经存在
	 * 排除当前词语 id：如果词语名称没有被修改，那么词语名称必定已经存在
	 */
	public boolean isWordNameExists(int exceptWordId, String wordName) {
		wordName = wordName.toLowerCase().trim();
		return Db.queryInt("select id from word where id != ?  and lower(name) = ? limit 1", exceptWordId, wordName) != null;
	}

	public boolean isWordIdExists(Integer wordId) {
		return Db.queryInt("select id from word where id = ? limit 1", wordId) != null;
	}

	public Ret save(int accountId, Word word) {
		word.setAccountId(accountId);
		//word.setWordName(word.getWordName().trim());
		//word.setContent(word.getContent().trim());
		word.setName(word.getName().trim());
		word.setCreateAt(new Date());
		word.save();
		return Ret.ok("msg", "创建成功");
	}
	/**
	 * 删除 word 之前，先删除 news_feed，NewsFeedService 会自动删除相应的 refer_me
	 * 注意：未来如果支持 word_reply 功能时，需要最先删除 word_word 相关的 news_feed、再删 word_reply，然后下面的代码
	 */
	public void delete(int wordId) {
		dao.deleteById(wordId);
	}
}

